﻿import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
///这是一个登录类。设计成一个继承容器的类。
class loggins extends JPanel
{
    /**
	 * 
	 */
	private static final long serialVersionUID = 1L;
///WIDTH是指整个顶层框架的宽度。
///HEIGHT是指整个顶层框架的长度。
 static final int WIDTH=300;
 static final int HEIGHT=150;
JFrame loginframe;
///此方法用来添加控件到容器中
///按照网格组布局方式排列组件的方法
///x指控件位于第几列。
///y指控件位于第几行。
///w指控件需要占几列。
///h指控件需要占几行。
    public void add(Component c,GridBagConstraints constraints,int x,int y,int w,int h)
    {
        constraints.gridx=x;
        constraints.gridy=y;
        constraints.gridwidth=w;
        constraints.gridheight=h;
        add(c,constraints);
}                                         
///这是一个构造器方法
///loginframe是就是指这个界面的框架
///setDefaultCloseOperation这是一个使得窗口上面的关闭控件有效的类库方法
///lay是一个网格组布局管理器的对象。
///nameinput是用来输入用户名的文本域。
///passwordinput是用来输入密码的文本域。
///title是用来显示标题的标签。
///name是用来显示“姓名”的标签。
///password是用来显示“密码”的标签。
///ok是一个按钮，使进入系统。
///cancel是一个按钮，使退出界面和系统。
///ok.addActionListener是一个进入系统动作事件监听方法。
///cancel.addActionListener是一个退出系统和界面动作事件的监听方法。
    loggins()
    {
        loginframe=new JFrame("我的通讯簿系统"); 
        loginframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        GridBagLayout lay=new GridBagLayout();  
        setLayout(lay);                        
        loginframe.add(this, BorderLayout.WEST);
        loginframe.setSize(WIDTH,HEIGHT);
///通过下面的代码来设置登陆窗口的位置
        Toolkit kit=Toolkit.getDefaultToolkit();
        Dimension screenSize=kit.getScreenSize();
        int width=screenSize.width;
        int height=screenSize.height;
        int x=(width-WIDTH)/2;
        int y=(height-HEIGHT)/2;
        loginframe.setLocation(x,y);

        JButton ok=new JButton("登录");
        JButton cancel=new JButton("放弃");
        JLabel title=new JLabel("通讯簿系统登陆窗口");
        JLabel name=new JLabel("用户名");
        JLabel password=new JLabel("密 码");
        final JTextField nameinput=new JTextField(15);
        final JTextField passwordinput=new JTextField(15);
///设置网格组布局管理器的参数
        GridBagConstraints constraints=new GridBagConstraints();
        constraints.fill=GridBagConstraints.NONE;
        constraints.anchor=GridBagConstraints.EAST;
        constraints.weightx=4;
        constraints.weighty=4;
///使用网格组布局添加控件
        add(title,constraints,2,0,2,1);            
        add(name,constraints,1,1,2,1);
        add(password,constraints,1,2,2,1);
        add(nameinput,constraints,3,1,2,1);
        add(passwordinput,constraints,3,2,2,1);
        add(ok,constraints,1,3,1,1);
        add(cancel,constraints,3,3,1,1);
        loginframe.setResizable(false);
        loginframe.setVisible(true);  
///当单击“确定”按钮后，会引起动作事件，下面的代码将给出事件处理的结果
        ok.addActionListener(new ActionListener()
        {
            public void actionPerformed(ActionEvent Event) 
            {
                String nametext=nameinput.getText();
                String passwordtext=passwordinput.getText();
                String str=new String(passwordtext);
                boolean x=(nametext.equals("starsong"));
                boolean y=(str.equals("750720"));     //在此设置密码和用户名
                boolean z=(x&&y);
///当密码和用户名都正确的话，将会进入到主菜单界面，如果用户名或者密码不正确的话，那么系统将会将所有输入清空，让用户重新输入
                if (z==true)
                {
                 new mainframe(); //此界面就是后面的主界面
                 loginframe.dispose();
                }
                else if(z==false)
                {
                    nameinput.setText("");
                    passwordinput.setText("");
                }
            }
        });
///当单击“放弃”按钮后，会引起动作事件，下面的代码给出了此事件处理的结果的方式
        cancel.addActionListener(new ActionListener()
        {
            public void actionPerformed(ActionEvent Event) 
            {
                loginframe.dispose();
            }
        });
    }
}
public class loggin
{
	
    public static void main(String[] args)
    {
        new loggins();}
}
